package com.ilancuo.thinkinjava.chapter_05;

/**
 * static 代码块测试
 * -----------------------------------------------------
 * 与其他静态代码块一样，静态代码块只执行一次；当首次生成一个类的
 * 对象时，或者首次访问那个类的静态数据成员时。
 * -----------------------------------------------------
 */
class Cup {

    Cup(int marker) {
        System.out.println("Cup(" + marker + ")");
    }

    void f(int marker) {
        System.out.println("f(" + marker + ")");
    }
}

class Cups {
    static Cup cup1;
    static Cup cup2;

    static {
        cup1 = new Cup(1);
        cup2 = new Cup(2);
    }

    Cups() {
        System.out.println("Cups()");
    }
}

public class ExplicitStatic {
    public static void main(String[] args) {
        System.out.println("Inside main()");
//        Cups.cup1.f(99);      // (1)
    }

    static Cups cups1 = new Cups();     // (2)
    static Cups cups2 = new Cups();     // (2)
}
//分析：
/**
 * 直接调用f()方法时，不会初始化类，即不会执行构造方法
 */